package org.example.math;

import java.util.Arrays;

/**
 * @Description: TODO
 * @Author wyatt
 * @Data 2024/07/02 15:58
 */
/**
 * 质数（Prime number），又称素数，指在大于1的自然数中，除了1和该数自身外，
 * 无法被其他自然数整除的数（也可定义为只有1与该数本身两个正因数的数）。
 * 大于1的自然数若不是素数，则称之为合数（也称为合成数）。
 */
public class PrimeNum {

    public static void main(String[] args) {
        new PrimeNum().printPrimeNum(100);
    }

    //打印 num以内的所有质数
    public void printPrimeNum(int num){
        boolean[] isPrime = new boolean[num+1];
        Arrays.fill(isPrime, true);
        isPrime[0] = false;
        isPrime[1] = false;
        int n = (int) Math.sqrt(num);
        for(int i=2;i<=n;i++){
            for(int j=i; i*j<=num;j++){
                isPrime[i*j] = false;
            }
        }

        for (int i = 2; i < isPrime.length; i++) {
            if(isPrime[i]){
                System.out.print(i + " ");
            }
        }
        System.out.println(" ");
    }

}
